#include "myuart.h"

int uart_buffer_size = 1024;

/*
uart通信
设置通信参数 - 设置波特率、数据位、停止位等      myuart_Init(void)
设置通信管脚 - 分配连接设备的管脚
安装驱动程序 - 为 UART 驱动程序分配 ESP32-C6 资源
运行 UART 通信 - 发送/接收数据
使用中断 - 触发特定通信事件的中断
删除驱动程序 - 如无需 UART 通信，则释放已分配的资源
*/

/**
  * 函    数：UART初始化
  * 参    数：无
  * 返 回 值：无
  */
void myuart_Init(void)
{
  const uart_config_t uart_config = {
          .baud_rate = 115200,
          .data_bits = UART_DATA_8_BITS,
          .parity = UART_PARITY_DISABLE,
          .stop_bits = UART_STOP_BITS_1,
          .flow_ctrl = UART_HW_FLOWCTRL_DISABLE,
          .source_clk = UART_SCLK_DEFAULT,
  };
  // Configure UART parameters
  uart_param_config(UART_NUM_1, &uart_config);

  // Set UART pins
  // TX: IO4, RX : IO5,
  // 硬件流控 RTS: IO18, CTS : IO19   不需要就设置成 UART_PIN_NO_CHANGE
  uart_set_pin(UART_NUM_1, 4, 5, UART_PIN_NO_CHANGE, UART_PIN_NO_CHANGE);

  /*
  通信管脚设置完成后，请调用 uart_driver_install() 安装驱动程序并指定以下参数：
  Tx 环形缓冲区的大小
  Rx 环形缓冲区的大小
  事件队列句柄和大小
  分配中断的标志
  // Install UART driver using an event queue here
  // 参数分别为：串口号，接收缓冲区，发送缓冲区，队列长度（消息长度），中断回调函数（没有写NULL），中断标志位。
  */
  uart_driver_install(UART_NUM_1, uart_buffer_size * 2, 0, 0, NULL, 0);

}

/**
  * 函    数：UART发送数据
  * 参    数：要发送字符的
  * 返 回 值：无
  */
int uart_sendData(const char* logName, const uint8_t* data)
{
  const int len = sizeof(data);
  const int txBytes = uart_write_bytes(UART_NUM_1, data, len);
  ESP_LOGI(logName, "Wrote %d bytes", txBytes);
  return txBytes;
}

